package com.xbongbong.esign.helper;

import com.alibaba.fastjson.JSONObject;
import com.xbongbong.esign.comm.HttpHelper;
import com.xbongbong.esign.comm.JSONHelper;
import com.xbongbong.esign.comm.LocalCacheHelper;
import com.xbongbong.esign.constant.CacheKeyConstant;
import com.xbongbong.esign.constant.ConfigConstant;
import com.xbongbong.esign.enums.RequestType;
import com.xbongbong.esign.exception.DefineException;
import com.xbongbong.esign.param.AccountParamUtil;
import com.xbongbong.paas.redis.PaasRedisHelper;
import com.xbongbong.paas.redis.RedisPrefixConstant;
import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.paas.toolbox.util.StringUtil;
import com.xbongbong.pro.enums.ErrorCodeEnum;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.Objects;

/**
 * @description 鉴权认证 辅助类
 * @author 宫清
 * @date 2019年7月19日 上午11:54:28
 * @since JDK1.7
 */
@Component
public class TokenHelper {

	@Resource
	public PaasRedisHelper paasRedisHelper;
	/**
	 * 不允许外部创建实例
	 */
	private TokenHelper() {
	}



	// -------------------------------------------公有方法start-------------------------------------------------------




	/**
	 * @description 刷新token
	 *
	 *              刷新token后，新旧token共存时间为5分钟，实际使用中，若使用redis或者guava的LoadingCache或自建本地缓存的方式来存储token，请注意刷新缓存时间
	 *
	 * @param refreshToken {@link String} 之前获取token时返回的refreshToken
	 * @date 2019年7月19日 上午11:55:57
	 * @author 宫清
	 * @throws DefineException
	 */
	public JSONObject refreshToken(String refreshToken) throws DefineException {
//		JSONObject json = httpHelper.doCommHttp(RequestType.GET,
//				ConfigConstant.refreshToken_URL(ConfigConstant.PROJECT_ID, refreshToken), null);
//		json = JSONHelper.castDataJson(json,JSONObject.class);
//
//		// 模拟存放本地缓存
//		toLocalCache(json);

//		return json;
		return null;
	}

	// -------------------------------------------公有方法end---------------------------------------------------------

	// -------------------------------------------私有方法start-------------------------------------------------------

	/**
	 * @description 模拟存放本地缓存
	 *
	 * @param json
	 * @author 宫清
	 * @date 2019年7月20日 下午4:04:08
	 */
	private static void toLocalCache(JSONObject json) {
		LocalCacheHelper.put(CacheKeyConstant.TOKEN, json.getString("token"));
		LocalCacheHelper.put(CacheKeyConstant.REFRESH_TOKEN, json.getString("refreshToken"));
	}

	// -------------------------------------------私有方法end---------------------------------------------------------
}
